package com.bgs.travelapp.card.service;

import com.bgs.travelapp.card.entity.CardDetailsEntity;
import com.bgs.travelapp.card.entity.CardEntity;
import com.bgs.travelapp.card.entity.CardRecordEntity;
import com.bgs.travelapp.page.PageRequest;
import com.bgs.travelapp.page.PageResult;

import java.util.Date;
import java.util.List;

/**
 * 购买会员卡记录管理   (前端--会员卡购买)
 * gpd 2022-07-20 09点12分
 */
public interface CardRecordService {

    /**
     * 新增会员卡 （前端---用户购买会员卡功能）
     * gpd 2022-08-02 17:16
     * @param cardRecordEntity
     * @return
     */
    Integer saveCardRecord(CardRecordEntity cardRecordEntity);

    /**
     * 查询选择的会员卡信息 （前端---用户购买会员卡功能）
     * gpd 2022-08-02 17:16
     * @return
     */
    List<CardEntity> getChoiceCard(Integer cardId);

    /**
     * 查询用户购买会员是否过期  （前端---用户购买会员卡功能）
     * gpd 2022-08-02 17:16
     * @param userId
     * @param cardId
     * @return
     */
    List<CardRecordEntity> getMemberOverdue(Integer userId, Integer cardId);

    /**
     * 查询已选择的会员卡详情  （前端---用户购买会员卡功能）
     * gpd 2022-08-02 17:16
     * @return
     */
    List<CardDetailsEntity> getCardDetails(Integer cardId);

    /**
     * 查询用户购买未过期会员卡的种类（cardId）
     * gpd 2022-08-02 19:16
     *
     * @param userId
     * @return
     */
    List<CardRecordEntity> getUserCard(Integer userId);

    /**
     * 查询用户购买会员卡的过期时间（前端--我的会员卡）
     * gpd 2022-08-03 17点18分
     *
     * @param userId
     * @param cardId
     * @return
     */
    CardRecordEntity getCardExpiration(Integer userId, Integer cardId);

    /**
     * 查询用户所有购买会员卡记录 分页查询+模糊查（起始购买时间）（结束购买时间）（前端---我的会员卡（支付记录））
     * gpd 2022-08-04 16点12分
     *
     * @param userId
     * @param pageRequest
     * @param createTime
     * @param createTime1
     * @return
     */
    PageResult getBuyRecord(Integer userId, PageRequest pageRequest, String createTime, String createTime1);

    /**
     * 查询用户还未过期的会员卡记录 分页查询+模糊查（起始购买时间）（结束购买时间）（前端---我的会员卡（查看明细））
     * gpd 2022-08-04 20点25分
     *
     * @param userId
     * @param pageRequest
     * @param createTime
     * @param createTime1
     * @param cardId
     * @return
     */
    PageResult getBuyCardRecord(Integer userId, PageRequest pageRequest, String createTime, String createTime1, Integer cardId);

    /**
     * 查询统计信息（前端---我的会员卡（查看明细--统计））
     * gpd 2022-08-05 16点15分
     * @param userId
     * @return
     */
    List<CardRecordEntity> getStatistics(Integer userId);

    /**
     * 定时任务
     * todo 定时查询用户购买会员卡过期时间
     * gpd 2022-08-08 10点37分
     * @return
     */
    List<CardRecordEntity>getQueryOverdueTasks();

    /**
     * 定时任务
     * todo 定时查询用户购买会员卡过期时间
     * 修改是否过期id
     * gpd 2022-08-08 10点37分
     * @return
     */
    Integer UpdateOverdueTasks(Integer id);
}
